<?php
class AccountController extends Controller
{   
        var $metaTitle = "mTop - Mạng kiếm tiền trực tuyến.";
        var $metaKeywords = "Bán game, Bán ứng dụng, Bán SMS Kute, Bán hotclip, Gắn kích hoạt apk, Gắn kích hoạt java ,  Kinh doanh sms";
        var $metaDescription = "Mạng kiếm tiền online của Wapmaster - Kinh doanh SMS  Content - Kinh doanh Game và Ứng dụng.";

    public function direct(){
        if(!isset($_SESSION["userId"])){
            $this->redirect(Url::createUrl("login/index"));
        }           
    }  
        
                   
    public function actionIndex(){
            $this->direct();
            $this->linkCanoncical = Url::createUrl('account/index');
            $userId= $_SESSION["userId"];
            $rowsUser = User::getUserInfo($userId);
            $this->render("index",array("rowsUser"=>$rowsUser)); 
        }

    public function actionForgetPassword(){
        
            $this->linkCanoncical = Url::createUrl('account/forgetPassword');
            $this->render("forgetPassword"); 
        } 
        
    public function actionRegister(){
        
            $this->linkCanoncical = Url::createUrl('account/register');
            $this->render("accountRegister"); 
        }    

    public function actionRegisterExc(){
         
            $this->linkCanoncical = Url::createUrl('account/registerExc');
            /* regx */
            $regxUsername = "/^[a-z](?=[a-z0-9]{3,24}$)[a-z0-9]*\.?[a-z0-9]*$/";
            $regxEmail = "/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/";
            /* Lấy các từ khóa bị cấm */
            $blacklist = Login::getBlacklist();

                $data = array();        
                $error = "";
                if(isset($_POST["username"])){
                    $refUID = 0;
                    $userId = isset($_GET["userId"]) ? intval($_GET["userId"]):0;
                    if($userId >0){
                        $data_user_invite = User::getUserInfo($userId);
                        if($data_user_invite){
                            $refUID = intval($userId);
                        }
                    }
                    $data["username"] = trim(strip_tags($_POST["username"]));
                    $data["email"] = trim(strip_tags($_POST["email"]));
                    $data["password"] = trim(strip_tags($_POST["password"]));
                    $data["password_retype"] = trim(strip_tags($_POST["password_retype"]));
                    $data["mobile"] = trim(strip_tags($_POST["mobile"]));
                    $data["address"] = trim(strip_tags($_POST["address"]));
                   // $data["refUID"] = $refUID;
                    $code = trim(strip_tags($_POST["code"]));

                    if(empty($data["username"])){
                        $error .= "<p style='color: red;padding:5px;'>- Tên đăng nhập không thể rỗng</p>";
                    } else {
                        if(!preg_match($regxUsername, $data["username"])){
                            $error .= "<p style='color: red;padding:5px;'>- Tên đăng nhập không đúng định dạng. Tên đăng nhập phải có ít nhất 4 ký tự và dài nhất 25 ký tự. Tên đăng nhập chỉ bao gồm chữ cái thường và số</p>";    
                        } else {
                            /* Kiểm tra blacklist */
                            $username = strtolower($data["username"]);                    
                            if(!empty($blacklist) && preg_match($blacklist, $username)){
                                $error .= "<p style='color: red;padding:5px;'>- Tên đăng nhập dùng từ nhạy cảm trái với quy định của ".ConstantsUtil::SYSTEM_NAME."</p>";       
                            }
                        }               
                    }

                    if(empty($data["email"])){
                        $error .= "<p style='color: red;padding:5px;'>- Email không thể rỗng</p>";
                    } else {
                        if(!preg_match($regxEmail, $data["email"]) || strlen($data["email"])>50 || strlen($data["email"])<5){
                            $error .= "<p style='color: red;padding:5px;'>- Email không đúng định dạng</p>";    
                        }                
                    }
                    if(empty($data["mobile"])){
                        $error .= "<p style='color: red;padding:5px;'>- Di dộng không thể rỗng</p>";
                    }
                    $error .= empty($data["password"]) ? "<p style='color: red;padding:5px;'>- Mật khẩu không thể rỗng.</p>" : "";
                    $error .= empty($data["password_retype"]) ? "<p style='color: red;padding:5px;'>- Mật khẩu xác nhận không thể rỗng.</p>" : "";
                    if(!empty($data["password"]) && !empty($data["password_retype"])){
                        if($data["password_retype"] != $data["password"]){
                            $error .= "<p style='color: red;padding:5px;'>- Hai mật khẩu không trùng khớp</p>";
                        } else {
                            $error .= Common::CheckPassword($data["password"]);
                        }
                    }            
                    if(strpos($data["mobile"],'0')===0){
                        $data["mobile"] = '84'.substr($data["mobile"],1);
                    }
                    
                    $checkUsername = User::checkUsername($data["username"]);
                    $checkEmail = User::checkEmail($data["email"]);
                    $checkMobile = User::checkMobile($data["mobile"]);
                    $error .= $checkUsername>0 ? "< style='color: red;padding:5px;'p>- Tên đăng nhập đã tồn tại</p>" : "";
                    $error .= $checkEmail>0 ? "<p style='color: red;padding:5px;'>- Email đã tồn tại</p>" : "";
                    $error .= $checkMobile>0 ? "<p style='color: red;padding:5px;'>- Số điện thoại đã tồn tại</p>" : "";
                    
                     /* check catpcha */
                    $code = trim(strip_tags($_POST["code"]));
                    $code_security = isset($_SESSION["code_security"]) ? $_SESSION["code_security"] : "";
                    if(empty($code)){
                        $error .= "<p style='color: red;padding:5px;'>- Bạn chưa nhập mã xác nhận</p>";    
                    } else {
                        $error .= $code!=$code_security ? "<p style='color: red;padding:5px;'>- Bạn nhập mã xác thực không đúng</p>" : "";   
                    }
                    
                    if(!isset($_POST["TermsOfService"]))
                    {
                         $error .= "<p style='color: red;padding:5px;'>- Bạn cần đồng ý với điều khoản của hệ thống.</p>";
                    }
                    if(empty($error)){
                        /* sinh mã xác nhận */
                        $random_str = md5(microtime());
                        $random_str = substr($random_str, 0, 9);
                        $data["key_active"] = $random_str;            
                        $password_forum = md5(md5($data["password"]));
                        $data["password"] = Common::genPass($data["password"]);
                        $data["active"] = 1;
                        $data["create_date"] = time();
                        //$data["refUID"] = 121;
                        /* Insert vào db */                
                        unset($data["password_retype"]);
                        $result = Login::InsertUsername($data);
                        if($result >= 0){          
                          //  $result1 = User::updateStatusMobileAndCode($data["mobile"],$code);          
                            /* Gửi mail */
                            if(Yii::app()->params["sendEmail"]){

                            }
                            /* Tạo thư mục */
                            $location = getcwd();
                            $location .= "/upload/user/" . $data["username"] . "/";                    
                            if(@chdir($location) == false) mkdir($location, 0755, true);

                            $this->redirect(Url::createUrl("/home/index"));
                        }
                    }
                }
                
                $this->render("accountRegister", array("error"=>$error, "data"=>$data));
                
        }   

            
        public function actionEdit(){
                $this->direct();
                $this->linkCanoncical = Url::createUrl('account/edit');
                $userId= $_SESSION["userId"];
                $rowsUser = User::getUserInfo($userId);
                $this->render("accountEdit",array("rowsUser"=>$rowsUser)); 
            }


        public function actionEditExc(){
                $this->direct();
                $this->linkCanoncical = Url::createUrl('account/editExc');
                $userId= $_SESSION["userId"];
                $errors ="";
                // Get Paras
                $full_name = isset($_POST["full_name"]) ? trim(strip_tags($_POST["full_name"])):"";
                $email = isset($_POST["email"]) ? trim(strip_tags($_POST["email"])):"";
                $birthday = isset($_POST["birthday"]) ? trim(strip_tags($_POST["birthday"])):"";
                $address = isset($_POST["address"]) ?trim(strip_tags($_POST["address"])):"";
                $id = isset($_POST["id"]) ? $_POST["id"]:0;
                // check info
                $errors .= empty($full_name) ? "<p style='color: red;padding:5px;'>- Họ và Tên không được để rỗng.</p>" : "";
                $errors .= empty($email) ? "<p style='color: red;padding:5px;'>- Email không được để rỗng.</p>" : "";
                $errors .= !Common::validateEmailSyntax($email) ? "<p style='color: red;padding:5px;'>- Email không đúng định dạng.</p>" : "";
              
                $date = DateTime::createFromFormat('!d/m/Y', $birthday);
                $iBirthday = $date->format('U');

                 if(empty($errors)){
                    $data = array(
                    "full_name"=>array("value"=>$full_name,"type"=>2),
                    "email"=>array("value"=>$email,"type"=>2),
                    "address"=>array("value"=>$address,"type"=>2),
                    "birthday"=>array("value"=>$iBirthday,"type"=>1),
                    "id"=>array("value"=>$userId,"type"=>1)
                    );
                    
                    $table = "c_user";
                    $result = CommonDB::updateRow($table,$data,array("id"));
                    $this->redirect(Url::createUrl("account/index"));
                }else{
                     $rowsUser = User::getUserInfo($userId);
                     $this->render("accountEdit",array("errors"=>$errors,"rowsUser"=>$rowsUser)); 
                }
            }

                
        public function actionChangePassword(){
                        $this->direct();
                        $this->linkCanoncical = Url::createUrl('account/changePassword');
                        $userId= $_SESSION["userId"];
                        $rowsUser = User::getUserInfo($userId);
                        $this->render("changePassword",array("rowsUser"=>$rowsUser)); 
                    }
                    
                
        public function actionChangePasswordExc(){
                    $this->direct();
                    $this->linkCanoncical = Url::createUrl('account/changePasswordExc');
                    $userId= $_SESSION["userId"];
                    $errors ="";
                    // Get Paras
                    $passwordOlder = isset($_POST["passwordOlder"]) ? trim(strip_tags($_POST["passwordOlder"])):"";
                    $passwordNew = isset($_POST["passwordNew"]) ? trim(strip_tags($_POST["passwordNew"])):"";
                    $passwordNewConfirm = isset($_POST["passwordNewConfirm"]) ? trim(strip_tags($_POST["passwordNewConfirm"])):"";
                    
                    $id = isset($_POST["id"]) ? $_POST["id"]:0;
                    // check info
                    $password_old = Common::genPass($passwordOlder);            
                    $checkPass = User::checkPass($userId, $password_old);
                    $errors .= empty($checkPass) ? "<p style='color: red;padding:5px;'>- Mật khẩu cũ không đúng.</p>" : "";
                        
                    $errors .= empty($passwordOlder) ? "<p style='color: red;padding:5px;'>- Mật khẩu cũ không được để trống.</p>" : "";
                    $errors .= empty($passwordNew) ? "<p style='color: red;padding:5px;'>- Mật khẩu mới không được để trống.</p>" : "";
                    $errors .= empty($passwordNewConfirm) ? "<p style='color: red;padding:5px;'>- Mật khẩu  xác nhận không được để trống.</p>" : "";
                    $errors .= strcmp($passwordNewConfirm,$passwordNew)!=0 ? "<p style='color: red;padding:5px;'>- Mật khẩu xác nhận không phù hợp.</p>" : "";
                    $errors.= Common::CheckPassword($passwordNew);  

                     if(empty($errors)){
                        $pass = $passwordNew;        
                        $passwordNew = Common::genPass($passwordNew);  
                        $password_forum = md5(md5($pass));  
                                                                               
                        $data = array(
                        "password"=>array("value"=>$passwordNew,"type"=>2),
                        "key_active_password"=>array("value"=>$password_forum,"type"=>2),
                        "id"=>array("value"=>$userId,"type"=>1)
                        );
                        
                        $table = "c_user";
                        $result = CommonDB::updateRow($table,$data,array("id"));
                        $this->redirect(Url::createUrl("account/index"));
                    }else{
                         $rowsUser = User::getUserInfo($userId);
                         $this->render("changePassword",array("errors"=>$errors,"rowsUser"=>$rowsUser)); 
                    }
                }
                
        public function actionPaymentEdit(){
                        $this->direct();
                        $this->linkCanoncical = Url::createUrl('account/paymentEdit');
                        $userId= $_SESSION["userId"];
                        $rowsUser = User::getUserInfo($userId);
                        $this->render("paymentEdit",array("rowsUser"=>$rowsUser)); 
                    }
                    
                    
                
        public function actionPaymentEditExc(){
                    $this->direct();
                    $this->linkCanoncical = Url::createUrl('account/paymentEditExc');
                    $userId= $_SESSION["userId"];
                    $errors ="";
                    // Get Paras
                    $type_payment = isset($_POST["type_payment"]) ? trim(strip_tags($_POST["type_payment"])):"1";
                    $account_bank = isset($_POST["account_bank"]) ? trim(strip_tags($_POST["account_bank"])):"";
                    $account_branch = isset($_POST["account_branch"]) ? trim(strip_tags($_POST["account_branch"])):"";
                    $account_owner = isset($_POST["account_owner"]) ? trim(strip_tags($_POST["account_owner"])):"";
                    $account_number= isset($_POST["account_number"]) ?trim(strip_tags($_POST["account_number"])):"";
                    $id = isset($_POST["id"]) ? $_POST["id"]:0;
                    // check info
                    $errors .= empty($account_bank) ? "<p style='color: red;padding:5px;'>- Ngân Hàng không được để trống.</p>" : "";
                    $errors .= empty($account_branch) ? "<p style='color: red;padding:5px;'>- Chi nhánh không được để trống.</p>" : "";
                    $errors .= empty($account_owner) ? "<p style='color: red;padding:5px;'>- Tên chủ tài khoản không được để trống.</p>" : "";
                    $errors .= empty($account_number) ? "<p style='color: red;padding:5px;'>- Số tài khoản không được để trống.</p>" : "";
                    //$errors .= !Common::validateEmailSyntax($email) ? "<p>- Email không đúng định dạng.</p>" : "";
                  
                     if(empty($errors)){
                        $data = array(
                        "account_bank"=>array("value"=>$account_bank,"type"=>2),
                        "account_branch"=>array("value"=>$account_branch,"type"=>2),
                        "account_owner"=>array("value"=>$account_owner,"type"=>2),
                        "account_number"=>array("value"=>$account_number,"type"=>2),
                        "type_payment"=>array("value"=>$type_payment,"type"=>1),
                        "id"=>array("value"=>$userId,"type"=>1)
                        );
                        
                        $table = "c_user";
                        $result = CommonDB::updateRow($table,$data,array("id"));
                        $this->redirect(Url::createUrl("account/index"));
                    }else{
                         $rowsUser = User::getUserInfo($userId);
                         $this->render("paymentEdit",array("errors"=>$errors,"rowsUser"=>$rowsUser)); 
                    }
                }
                
        public function actionPaymentByCardEdit(){
                        $this->direct();
                        $this->linkCanoncical = Url::createUrl('account/paymentByCardEdit');
                        $userId= $_SESSION["userId"];
                        $rowsUser = User::getUserInfo($userId);
                        $this->render("paymentByCardEdit",array("rowsUser"=>$rowsUser)); 
                    }
                        
        public function actionPaymentByCardEditExc(){
                    $this->direct();
                    $this->linkCanoncical = Url::createUrl('account/paymentEditExc');
                    $userId= $_SESSION["userId"];
                    $errors ="";
                    // Get Paras
                    $type_payment = isset($_POST["type_payment"]) ? trim(strip_tags($_POST["type_payment"])):"1";
                    $type_card = isset($_POST["type_card"]) ? trim(strip_tags($_POST["type_card"])):"";
                    $id = isset($_POST["id"]) ? $_POST["id"]:0;
                    // check info
                    $errors .= empty($type_card) ? "<p style='color: red;padding:5px;'>- Loại thẻ không được để trống.</p>" : "";
                    
                     if(empty($errors)){
                        $data = array(
                        "type_card"=>array("value"=>$type_card,"type"=>2),
                        "type_payment"=>array("value"=>$type_payment,"type"=>1),
                        "id"=>array("value"=>$userId,"type"=>1)
                        );
                        
                        $table = "c_user";
                        $result = CommonDB::updateRow($table,$data,array("id"));
                        $this->redirect(Url::createUrl("account/index"));
                    }else{
                         $rowsUser = User::getUserInfo($userId);
                         $this->render("paymentByCardEdit",array("errors"=>$errors,"rowsUser"=>$rowsUser)); 
                    }
                }        
}   

    
?>
